/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * AreaListar.java
 *
 * Created on 07/05/2011, 11:01:09 AM
 */
package org.gingresos.regimenimpositivo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import org.sirmupadbapi.beans.*;
import org.gingresos.start.MySesion;
import org.jdesktop.swingx.JXTipOfTheDay;
import org.jdesktop.swingx.tips.DefaultTip;
import org.jdesktop.swingx.tips.DefaultTipOfTheDayModel;
import org.jdesktop.swingx.tips.TipOfTheDayModel;
import org.sirmupadbapi.controller.*;
import org.sirmupadbapi.generales.Mensajeria;

/**
 *
 * @author avbravo
 */
public class CargarIngresos extends javax.swing.JInternalFrame {

//    Connection conexionIngresos = null;
    String ipIngresos;
    RecibesController recibosController1 = new RecibesController();
    RecibesdetallesController recibosdetallesController1 = new RecibesdetallesController();
    JXTipOfTheDay tipOfTheDay = new JXTipOfTheDay(loadModel());

    private static TipOfTheDayModel loadModel() {
        List tips = Arrays.asList(new DefaultTip("Tip 1", "Este proceso importa grupo, subgrupo, regimen de la base de datos de ingresos"),
                new DefaultTip("Tip 2", "Este proceso consume mucho tiempo."));
        DefaultTipOfTheDayModel model = new DefaultTipOfTheDayModel(tips);
        return model;
    }
    JLabel statusLabel = new JLabel();

    /**
     * Creates new form AreaListar
     */
    public CargarIngresos() {
        initComponents();


        jXStatusBar1.add(statusLabel);

        jButtonCargarRegistros.setEnabled(true);

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jXStatusBar1 = new org.jdesktop.swingx.JXStatusBar();
        jButtonCargarRegistros = new javax.swing.JButton();
        jButtonAyuda = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("Cargar Ingresos");

        jLabel2.setText("Esta opción carga al sistema de egresos los recibos y detalles de recibos");

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/return.png"))); // NOI18N
        jButton1.setToolTipText("Cerrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButtonCargarRegistros.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/download.png"))); // NOI18N
        jButtonCargarRegistros.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCargarRegistrosActionPerformed(evt);
            }
        });

        jButtonAyuda.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/help_icon.gif"))); // NOI18N
        jButtonAyuda.setToolTipText("Ayuda");
        jButtonAyuda.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAyudaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(68, 68, 68)
                        .addComponent(jButtonCargarRegistros, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonAyuda, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabel2))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jXStatusBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 432, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(45, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel2)
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jButtonAyuda, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButtonCargarRegistros, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 171, Short.MAX_VALUE)
                .addComponent(jXStatusBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(126, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    dispose();
}//GEN-LAST:event_jButton1ActionPerformed

    private void jButtonCargarRegistrosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCargarRegistrosActionPerformed
        Thread queryThread = new Thread() {

            public void run() {
                runQueries();
            }
        };
        queryThread.start();

    }//GEN-LAST:event_jButtonCargarRegistrosActionPerformed

    private void jButtonAyudaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAyudaActionPerformed
        tipOfTheDay.showDialog(this);
    }//GEN-LAST:event_jButtonAyudaActionPerformed
    /**
     * @param args the command line arguments
     */
//    public static void main(String args[]) {
//        java.awt.EventQueue.invokeLater(new Runnable() {
//
//            public void run() {
//                try {
//                    new AreaCrear().setVisible(true);
//                } catch (ParseException ex) {
//                    Logger.getLogger(AreaCrear.class.getName()).log(Level.SEVERE, null, ex);
//                }
//            }
//        });
//    }
    private void runQueries() {
     try {
//            if (!ConectarIngresos()) {
//                Mensajeria.Mensaje("No se pudo conectar...");
//                return;
//            } else {
//                List<Recibes> listRecibos = new ArrayList<Recibes>();
//                String sql = "select * from recibes";
//                PreparedStatement psquery = conexionIngresos.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
//                        ResultSet.CONCUR_UPDATABLE);
//                ResultSet rs = psquery.executeQuery();
//                rs.next();
//                int x = rs.getRow();
//                if (x == 0) {
//                    Mensajeria.Mensaje("No existen registros en la tabla recibes con esa condicion");
//
//                    rs.close();
//                    psquery.close();
////                    conexionIngresos.close();
//
//                }
//                rs.beforeFirst();
//                updateProgress("analizando registros de la tabla recibes por favor espere....");
//                while (rs.next()) {
//                    Date date = rs.getDate("fecha");
//                    SimpleDateFormat simpleDateformat = new SimpleDateFormat("yyyy");
//                    Integer anio = Integer.parseInt(simpleDateformat.format(date));
//
//                    listRecibos.add(new Recibes(
//                            rs.getInt("idrecibo"), anio, rs.getDate("fecha"), rs.getString("id"), rs.getString("tipoid"), rs.getString("anulado"), rs.getString("exonerado"), rs.getString("moroso"), MySesion.getIdmunicipio(), rs.getDouble("totalpagado"), rs.getDouble("totalexonerado"), rs.getString("idexonerado"), rs.getString("idusuario"), rs.getString("tiporecibo"), rs.getString("cedulatesoreroauxiliar"), rs.getInt("idreciboauxiliar")));
//                }
//                rs.close();
//                psquery.close();
//                if (listRecibos.size() == 0) {
//                    Mensajeria.Mensaje("No existen registros recibes");
//                }
//
//                /*
//                 * RecibosDetalles
//                 */
//                List<Recibosdetalles> listRecibosdetalles = new ArrayList<Recibosdetalles>();
//                sql = "select recibes.fecha, recibes.anulado,recibesdetalles.* from recibesdetalles, recibes where recibes.idrecibo =recibesdetalles.idrecibo";
//                psquery = conexionIngresos.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
//                        ResultSet.CONCUR_UPDATABLE);
//                rs = psquery.executeQuery();
//                rs.next();
//                x = rs.getRow();
//                if (x == 0) {
//                    Mensajeria.Mensaje("No existen registros en la tabla recibesdetalles con esa condicion");
//                    rs.close();
//                    psquery.close();
////                    conexionIngresos.close();
//
//                } else {
//                    rs.beforeFirst();
//
//                    updateProgress("analizando registros de la tabla recibesdetalles por favor espere....");
//                    while (rs.next()) {
//
//                        Date date = rs.getDate("fecha");
//                        SimpleDateFormat simpleDateformat = new SimpleDateFormat("yyyy");
//                        Integer anio = Integer.parseInt(simpleDateformat.format(date));
//                        listRecibosdetalles.add(new Recibosdetalles(
//                                rs.getInt("idrecibo"), anio, MySesion.getIdmunicipio(), rs.getString("idregimen"), rs.getDouble("valor"), rs.getInt("cantidad"), rs.getDouble("pago"), rs.getDouble("exoneracion"), rs.getString("esrecargo"), rs.getDouble("saldo"), rs.getDouble("saldoanterior"), rs.getString("comentario"), rs.getString("estatus"), rs.getString("periodo"), rs.getDouble("solomorosidad"), rs.getInt("numeropagina"), rs.getDate("fecha"), rs.getString("anulado")));
//                    }
//                    rs.close();
//                    psquery.close();
//                    if (listRecibos.size() == 0) {
//                        Mensajeria.Mensaje("No existen registros recibesdetalles");
//                    }
//                }
//
//
//
//                conexionIngresos.close();
//                /*
//                 * Pasar los recibos
//                 */
//                recibosController1.deleteAll();
//                int contador = 0;
//                for (Recibos recibos : listRecibos) {
//                    contador++;
//                    updateProgress("procesando registro  " + contador + " de " + listRecibos.size());
//                    // if (!recibosController1.exists(recibos)) {
//                    if (recibosController1.insert(recibos)) {
//                    }
//                    // }
//                }
//
//                /*
//                 * Pasar los recibosdetalles
//                 */
//                recibosdetallesController1.deleteAll();
//                contador = 0;
//                for (Recibosdetalles recibosdetalles : listRecibosdetalles) {
//                    updateProgress("procesando recibosdetalles  " + contador++ + " de " + listRecibosdetalles.size());
////                    if (!recibosdetallesController1.exists(recibosdetalles)) {
//                    if (recibosdetallesController1.insert(recibosdetalles)) {
//                    }
////                    }
//                }
//                updateProgress("proceso de importacion terminado");
//                jButtonCargarRegistros.setEnabled(false);
//            }

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "runQueries()");
        }

    }

    private void updateProgress(final String texto) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                // Here, we can safely update the GUI
                // because we'll be called from the
                // event dispatch thread
//                 statusLabel.setText( texto+ " : " + queryNo);
                statusLabel.setText(texto);
            }
        });
    }

//    public Boolean ConectarIngresos() {
//
//        try {
//            if (ipIngresos == null || ipIngresos.equals("")) {
//                Servidoringresos servidoringresos1 = new Servidoringresos();
//                ServidoringresosController servidoringresosController1 = new ServidoringresosController();
//                servidoringresos1.setIdmunicipio(MySesion.getIdmunicipio());
//
//                if (servidoringresosController1.findByIdmunicipio(servidoringresos1)) {
//                    Servidoringresos servidoringresos = servidoringresosController1.getServidoringresoslist().get(0);
//                    this.ipIngresos = servidoringresos.getServidor();
//                } else {
//                    Mensajeria.Mensaje("No se ha configurado el servidor de ingresos ");
//                    return true;
//                }
//            }
//
//
//            String databaseDB = "sirmupadb";
//            String puertoDB = "3306";
//            String userDB = "root";
//            String passwordDB = "denver";
//
//
//            String driver = "org.gjt.mm.mysql.Driver";
//
//            Class.forName(driver).newInstance();
//            String url = "jdbc:mysql://" + ipIngresos + ":" + puertoDB + "/" + databaseDB;
//
//            //con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sirmupadb", "root", "denver");
//            //con = DriverManager.getConnection(url, "root", "denver");
//
//            conexionIngresos = DriverManager.getConnection(url, userDB, passwordDB);
//
//            if (conexionIngresos == null) {
//                Mensajeria.Mensaje("No se pudo establecer la conexion ");
//
//                return false;
//            }
//            //    Mensajeria.Mensaje("Se conecto exitosamente");
//            return true;
//
//        } catch (Exception ex) {
//            Mensajeria.MensajeError(ex, "Conectar()");
//        }
//        return null;
//    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButtonAyuda;
    private javax.swing.JButton jButtonCargarRegistros;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private org.jdesktop.swingx.JXStatusBar jXStatusBar1;
    // End of variables declaration//GEN-END:variables
}
